<?php

/**
 * 用于检测业务代码死循环或者长时间阻塞等问题
 * 如果发现业务卡死，可以将下面declare打开（去掉//注释），并执行php start.php reload
 * 然后观察一段时间workerman.log看是否有process_timeout异常
 */
//declare(ticks=1);

use trade\common\service\KlineService;
use GatewayWorker\Lib\Gateway;



/**
 * 主逻辑
 * 主要是处理 onConnect onMessage onClose 三个方法
 * onConnect 和 onClose 如果不需要可以不用实现并删除
 */
class Events
{
    public static $kline = null;
    
    public static function onWorkerStart($businessWorker)
    {
        static::$kline = new KlineService();
    }
    
    
    /**
     * 当客户端发来消息时触发
     * @param int $client_id 连接id
     * @param mixed $message 具体消息
     */
    public static function onMessage($client_id, $message)
    {
        $message = json_decode($message,true);
        if( !empty($message['event']) && method_exists(Events::class,'onEvent_'.$message['event']) ){
            $func = 'onEvent_'.$message['event'];
			static::$func($client_id, $message);
        }
    }


    public static function onEvent_bind_tf_futures_trade($client_id,$message){
        Gateway::joinGroup($client_id,'tf_futures_trade');
    	Gateway::sendToClient($client_id,json_encode([
    		'event'=>'onready',
    		'data' =>[
    			//'symbol' => Db::table('rf_addon_tf_futures_symbol')->order('id', 'desc')->select(),
    			'ticket' => static::$kline->loadTicekt(null,'tf_futures_trade')
    		]
    	]));
    }

}
